<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>逻辑运算符</title>
    <script>
        /*
        逻辑运算符有三个
            ！ 逻辑非（非运算）
                非运算可以用对一个布尔值进行取反操作，也就是说可以把true转换为false，把false转换为true
                如果对一个非布尔值进行非运算，它会将其转换为布尔值，然后再取反
                利用非运算可以将一个任意类型的值转换为布尔值。
            && 逻辑与（与运算）也就是且运算
                与运算可以对符号两侧值进行与运算
                如果与运算两侧的值都为true，则返回true，否则返回false
                与运算是找false，一假即假

            || 逻辑或（或运算）
                如果或运算两侧的值都是false，则返回false，否则返回true
                或运算是找true的，一真即真

            非布尔值的与或运算
                会先将其转换为布尔值，然后进行运算，最终返回原值。
                    与运算的规则
                        如果第一个值是true，则返回第二个值，否则返回第一个
                    或运算的规则
                        如果第一个值是true，则返回第一个值，否则返回第二个。

            在JS中，与（&&）和或（||）都是短路的与和短路的或。
                对于与运算来说，如果第一个值是false，则不会再去查看第二个值
                对于或运算来说，如果第一个值是true，则不会再去查看第二个值
        */
        /*//非运算
        var a = true;
        console.log(a);
        a = !a;     //对a进行非运算，然后再将结果赋值给a
        console.log(a);*/

        /*//与运算
        var result = true && true;  //true
        result = true && false;     //false
        result = false && true;     //false
        result = false && false;    //false*/

        /*//或运算
        result = true || true;      //true
        result = true || false;     //true
        result = false || true;     //true
        result = false || false;    //false

        console.log('result =', result);*/

       /* //非布尔值的与运算
        var result = 'hello' && 0;  //0
        result = 'hello' && 'abc';  //abc两个都是true返回第二个
        result = 0 && 'hello';      //0
        result = 0 && null;         //0*/

        /*//非布尔值的或运算
        result = 'hello' || 0;  //hello
        result = 'hello' || 'abc';  //hello
        result = 0 || 1;            //1
        result = 0 || null;         //null

        console.log('result =', result);*/

        // true && alert('hello');     //会显示alert
        // false && alert('hello');    //不会显示alert

        // true || alert('hello');     //不会显示alert
        false || alert('hello');    //不会显示alert



    </script>


</head>
<body>

</body>
</html>